
        <html>
			<head>
			     <title>WireShark黑客发现之旅（7）—勒索邮件 - 聚锋实验室</title>
				 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
			</head>
			<body>
				<h1>原文地址:<a href="http://drops.wooyun.org/papers/14912">http://drops.wooyun.org/papers/14912</a></h1>
				
      <p>
        <p><strong>作者</strong>：Mr.Right、Gongmo、K0r4dji</p>

<p><strong>申明</strong>：文中提到的攻击方式仅为曝光、打击恶意网络攻击行为，切勿模仿，否则后果自负。</p>

<h1>0x00 前言</h1>

<hr />

<p>近期，越来越多的人被一种恶意软件程序勒索，电脑上的多种重要文件都被加密而无法打开，并且无计可施，只能乖乖支付赎金，以对文件解密。</p>

<p><img src="http://static.wooyun.org//drops/20160413/20160413152143287601.jpeg" alt="" /></p>

<!--more-->

<p>网上关于该类病毒的详细分析案例很多，在此不再详述。本文分享主要通过WireShark从流量分析判断勒索邮件、再进行深入分析。</p>

<h1>0x01 截获邮件样本</h1>

<hr />

<p>通过监控某政府邮件服务器发现，近期大量用户收到此诈骗勒索邮件，邮件的发件人一般为陌生人，收件人指向明确，且带有跟收件人名称一致的ZIP附件，邮件内容一般为“请检查附件的XX，为了避免罚款，你必须在X小时内支付。”的诈骗威胁内容。</p>

<p><img src="http://static.wooyun.org//drops/20160413/20160413152208787702.jpeg" alt="" /></p>

<p>解压ZIP附件可发现病毒文件。</p>

<p><img src="http://static.wooyun.org//drops/20160413/2016041315331682337320.png" alt="" /></p>

<h1>0x02 WireShark分析</h1>

<hr />

<p>对于邮件协议的分析，我们首先按OSI七层模型对其数据进行建模，对网络协议的每层进行分析，最后汇总其安全性。（同样适用于其它协议）</p>

<p><img src="http://static.wooyun.org//drops/20160414/20160414010917191624.jpeg" alt="" /></p>

<h2>（一） 物理层分析</h2>

<p>暂不做分析。</p>

<h2>（二） 链路层分析</h2>

<p>由于该流量接入点为邮件服务器边界出口，所以多为SMTP数据。该数据链路层帧格式为以太帧（Ethernet II），共14字节，前12字节表示两端的MAC地址，后两字节0x0800表示后接IPV4协议。</p>

<p><img src="http://static.wooyun.org//drops/20160414/20160414010929729235.jpeg" alt="" /></p>

<p>此层数据无异常。</p>

<h2>（三） 网络层分析</h2>

<p>从网络层数据开始，我们就会逐渐发现异常。当然，这个数据在网络层对我们有用的也就是源、目的IP地址。源地址10.190.3.172为邮件服务器地址，目的地址191.102.101.248 （哥伦比亚）为发件方地址。</p>

<p><img src="http://static.wooyun.org//drops/20160414/20160414010931859456.jpeg" alt="" /></p>

<p>简单做几个测试，就发现有异常：</p>

<ol>
<li><p>191.102.101.248并未开放TCP25端口；</p></li>
<li><p>191.102.101.248与elynos.com无关；</p></li>
</ol>

<p>初步判断发件人的邮箱是伪造的。</p>

<h2>（四） 传输层分析</h2>

<p>我们简单统计一下该数据的TCP25端口，发现在包数量等于28的附近区域，有大量不同IP发来的邮件，且字节长度也基本相等，可以初步判断大量邮箱收到差不内容的异常邮件。</p>

<p><img src="http://static.wooyun.org//drops/20160414/20160414010933471967.jpeg" alt="" /></p>

<p>提取一封follow tcpstream，可看出，也是一封勒索邮件。</p>

<p><img src="http://static.wooyun.org//drops/20160414/20160414010934419928.jpeg" alt="" /></p>

<h2>（五） 会话层分析</h2>

<p>SMTP协议在会话层一般分析要素包括：认证过程、收发关系、加密协商、头部协商等。</p>

<p>将一封邮件的会话Follow TCPStream，可以看出邮件的发件人是来自外部的“陌生人”。</p>

<p><img src="http://static.wooyun.org//drops/20160414/20160414010936133539.jpeg" alt="" /></p>

<p>我们将部分邮件收发关系进行汇总，可以看出虽然发着同样的勒索邮件，但其发件人地址为了躲避垃圾邮件过滤，伪造了大量的邮箱地址及域名。</p>

<p><img src="http://static.wooyun.org//drops/20160414/201604140109382410810.jpeg" alt="" /></p>

<h2>（六） 表示层分析</h2>

<p>在表示层分析要素一般包括编码和列表等，由于此邮件属于正常通信邮件，在表示层无异常因素。</p>

<h2>（七） 应用层分析</h2>

<p>针对此案例，应用层分析目标包括：邮件正文内容安全、邮件附件安全、是否为垃圾邮件等。</p>

<p><img src="http://static.wooyun.org//drops/20160414/201604140109393814911.jpeg" alt="" /></p>

<p>1.指向性：收件人邮箱名为：<code><a class="__cf_email__" href="/cdn-cgi/l/email-protection" data-cfemail="43352c2a202676031b6d242c356d202d">[email&#160;protected]</a><script data-cfhash='f9e31' type="text/javascript">/* <![CDATA[ */!function(t,e,r,n,c,a,p){try{t=document.currentScript||function(){for(t=document.getElementsByTagName('script'),e=t.length;e--;)if(t[e].getAttribute('data-cfhash'))return t[e]}();if(t&&(c=t.previousSibling)){p=t.parentNode;if(a=c.getAttribute('data-cfemail')){for(e='',r='0x'+a.substr(0,2)|0,n=2;a.length-n;n+=2)e+='%'+('0'+('0x'+a.substr(n,2)^r).toString(16)).slice(-2);p.replaceChild(document.createTextNode(decodeURIComponent(e)),c)}p.removeChild(t)}}catch(u){}}()/* ]]> */</script></code>，邮件正文称呼为“dear voice5”，邮件附件名称为“<code>voice5_*.zip</code>”，可看出此勒索邮件为骗取点击率，进行了简单的社工。</p>

<p>2.邮件正文：</p>

<p>“Please check the bill in attachment.</p>

<p>In order to avoid fine you have to pay in 48 hours.”</p>

<p>明显的诈骗威胁内容。</p>

<p>3.将此邮件内容Save一下，可得到附件内容。通过分析，可确认附件为敲诈勒索病毒。（本文不详述）</p>

<p><img src="http://static.wooyun.org//drops/20160414/201604140109417951812.jpeg" alt="" /></p>

<h1>0x03 勒索病毒分析</h1>

<hr />

<p><strong>（注：本章节不全属于Wireshark分析范畴）</strong></p>

<h2>（一）病毒初始化文件</h2>

<p>1)病毒文件一共是6个，其中红框中的3个文件是隐藏文件，js文件是引导用户打开的文件。为了防止杀毒软件查杀病毒，病毒文件首先是按照pe结构分开的，js命令把pe文件组合在一起，构成一个完成的bin文件。</p>

<p><img src="http://static.wooyun.org//drops/20160414/2016041401094211584137.png" alt="" /></p>

<p>2)组合好的病毒文件会放到<code>c:\User\Username\Appdata\Local\temp</code>目录下，然后后台运行。如下图红色框中</p>

<p><img src="http://static.wooyun.org//drops/20160414/2016041401094365151147.png" alt="" /></p>

<p>在IDA中打开bin文件。大段大段的加密数据文件。如下图所示：</p>

<p><img src="http://static.wooyun.org//drops/20160414/2016041401094585238156.png" alt="" /></p>

<h2>（二）病毒行为</h2>

<p>1)病毒解密还原后，才能正常执行。病毒文件经过了很多的亦或乘除等算法，通过VirtualAlloc在内存中存放一段代码，然后调用RtlDecompressBuffer进行解压，并在内存里还原代码。所有API函数都是动态调用的。下图是其中的一小部分还原数据的内容。</p>

<p><img src="http://static.wooyun.org//drops/20160414/2016041401094660346167.png" alt="" /></p>

<p><img src="http://static.wooyun.org//drops/20160414/2016041401094859598176.png" alt="" /></p>

<p><img src="http://static.wooyun.org//drops/20160414/2016041401094961245186.png" alt="" /></p>

<p><img src="http://static.wooyun.org//drops/20160414/2016041401095076171194.png" alt="" /></p>

<p>2)在内存解密，申请分页，并拥有执行能力。</p>

<p><img src="http://static.wooyun.org//drops/20160414/2016041401095243103203.png" alt="" /></p>

<p>3)病毒会在HEKY&#95;CURRENT&#95;USER下创建一个属于用户的key值。</p>

<p><img src="http://static.wooyun.org//drops/20160414/20160414010953754932110.png" alt="" /></p>

<p><img src="http://static.wooyun.org//drops/20160414/2016041401095459447224.png" alt="" /></p>

<p><img src="http://static.wooyun.org//drops/20160414/2016041401095664800233.png" alt="" /></p>

<p>4)病毒会判断系统版本:从Win2000，xp 一直到最新的Win10以及Win Server 2016;</p>

<p><img src="http://static.wooyun.org//drops/20160414/2016041401095730888243.png" alt="" /></p>

<p><img src="http://static.wooyun.org//drops/20160414/2016041401095878269252.png" alt="" /></p>

<p>由于我们的虚拟机是win7；所以这里判断出是win7 zh代表中国。</p>

<p><img src="http://static.wooyun.org//drops/20160414/2016041401100059503262.png" alt="" /></p>

<p>病毒开始构造一个连接，准备发往作者的服务器。构造如下：</p>

<p><code>Id=00&amp;act=00&amp;affid=00&amp;lang=00&amp;corp=0&amp;serv=00&amp;os=00&amp;sp=00&amp;x64=00;</code></p>

<p>很明显这是在获取系统的一些信息，包括ID号，版本号，语言等。</p>

<p><img src="http://static.wooyun.org//drops/20160414/2016041401100152883272.png" alt="" /></p>

<p>病毒准备提交的网址：</p>

<p><img src="http://static.wooyun.org//drops/20160414/2016041401100324784282.png" alt="" /></p>

<p>下面的IP地址；都要尝试连接一次。</p>

<p><img src="http://static.wooyun.org//drops/20160414/2016041401100466126292.png" alt="" /></p>

<p>通过wireshark截取的数据我们发现：有些IP地址的php网页已经丢失了。</p>

<p><img src="http://static.wooyun.org//drops/20160414/2016041401100679409302.png" alt="" /></p>

<p><img src="http://static.wooyun.org//drops/20160414/20160414011007974763110.png" alt="" /></p>

<p>除此之外，病毒尝试连接部分c&amp;c服务器网址，部分如下：</p>

<p><img src="http://static.wooyun.org//drops/20160414/2016041401100991129323.png" alt="" /></p>

<p>5)如果病毒c&amp;c服务器没有返回信息；则病毒一直处于等待状态。</p>

<p>6)感染文件。首先循环便遍历扫描文件。</p>

<p><img src="http://static.wooyun.org//drops/20160414/2016041401101086934333.png" alt="" /></p>

<p><img src="http://static.wooyun.org//drops/20160414/2016041401101231600342.png" alt="" /></p>

<p>下图是病毒要修改的文件格式：</p>

<p><img src="http://static.wooyun.org//drops/20160414/2016041401101340752352.png" alt="" /></p>

<p>文件名生成部分算法：</p>

<p>文件名被修改过程分为两部分，前半部分代表系统的key值，后半部分通过算法生成。文件名改名加密算法的局部过程，从”0123456789ABCDEF”当中随机选取一个字符充当文件名的局部。随机函数采用<code>CryptGenRandom()</code>。</p>

<p><img src="http://static.wooyun.org//drops/20160414/2016041401101410105362.png" alt="" /></p>

<p>文件内容加密总体流程：</p>

<p><img src="http://static.wooyun.org//drops/20160414/2016041401101719317372.png" alt="" /></p>

<p>首先文件以只读形式打开，防止其他文件访问其内容，接着通过AES-128算法加密器内容，最后置换文件。完成文件加密。</p>

<p>文件内容：经过AES-128位算法加密。</p>

<p><img src="http://static.wooyun.org//drops/20160414/2016041401101855581382.png" alt="" /></p>

<p>打开文件</p>

<p><img src="http://static.wooyun.org//drops/20160414/2016041401102073049392.png" alt="" /></p>

<p>把加密后的数据写回文件：</p>

<p><img src="http://static.wooyun.org//drops/20160414/2016041401102179363402.png" alt="" /></p>

<p>然后通过API函数替换文件。</p>

<p><img src="http://static.wooyun.org//drops/20160414/2016041401102368666418.png" alt="" /></p>

<p>8)桌面背景被换为：</p>

<p><img src="http://static.wooyun.org//drops/20160414/2016041401102441385423.png" alt="" /></p>

<h1>0x04 总结</h1>

<hr />

<ol>
<li><p>此类勒索邮件标题、正文、附件内容基本相同，只是针对收件人名称稍作修改。</p></li>
<li><p>为躲避邮件过滤系统，发送者邮箱使用和伪造了大量不同的IP和邮箱地址。</p>

<p><img src="http://static.wooyun.org//drops/20160414/201604140110262376143.jpeg" alt="" /></p></li>
<li><p>虽然此勒索病毒最终需要通过针对附件样本的分析才能判断确认，但基于流量分析可以发现诸多异常，完全可以在流量通信层面进行归纳阻断。</p></li>
<li><p>随着大量比特币病毒流入国内，各种敲诈勒索行为日渐增多，对应这种病毒，我认为防范大于修复。因为比特币病毒对文件的加密算法部分相对复杂，还原的可能性较小。并且每台机器又不一致。所以，我们尽量做好预防才是根本。以下是几点需要我们提高警觉性的：（1）及时更新杀毒软件。（2）注意防范各种不明确的邮箱附件。（3）及时备份重要信息到其他存储介质。</p></li>
</ol>      </p>
    
			</body>
		</html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          